home *** CD-ROM | disk | FTP | other *** search
- package icontrols.Data;
-
- import com.ms.ado.DataSource;
- import com.ms.ado.Recordset;
- import com.ms.ado.adodb._Recordset;
- import com.ms.com._Guid;
- import com.ms.wd.core.CancelEvent;
- import com.ms.wd.core.CancelEventHandler;
- import com.ms.wd.core.Event;
- import com.ms.wd.core.EventHandler;
- import com.ms.wd.util.Utils;
-
- public class RecordsetProvider {
- private DataSource m_dataSource = null;
- private String m_dataMember = null;
- private Recordset m_recordset = null;
- private EventHandler m_acquireRecordsetHandler = null;
- private EventHandler m_releaseRecordsetHandler = null;
- private CancelEventHandler m_willAcquireRecordsetHandler = null;
- private CancelEventHandler m_willReleaseRecordsetHandler = null;
-
- public DataSource getDataSource() {
- return this.m_dataSource;
- }
-
- public void setDataSource(DataSource dataSource) {
- this.releaseRecordset();
- this.m_dataSource = dataSource;
- this.acquireRecordset();
- }
-
- public void setWillReleaseRecordset(CancelEventHandler handler) {
- this.m_willReleaseRecordsetHandler = handler;
- }
-
- private void acquireRecordset() {
- if (this.fireWillAcquireRecordset()) {
- throw new RuntimeException("AcquireRecordset canceled");
- } else {
- if (this.m_dataSource != null) {
- _Guid riid = _Recordset.iid;
- Object member = this.m_dataSource.getDataMember(this.m_dataMember, riid);
- if (member != null) {
- Recordset source = null;
- _Recordset rs = null;
-
- try {
- rs = (_Recordset)member;
- } catch (Exception var7) {
- }
-
- if (rs == null) {
- try {
- source = (Recordset)member;
- } catch (Exception var6) {
- }
- } else {
- source = new Recordset(rs);
- }
-
- if (source != null) {
- this.m_recordset = source;
- this.onAcquireRecordset(Event.EMPTY);
- }
- }
- }
-
- }
- }
-
- public boolean fireWillReleaseRecordset() {
- CancelEvent event = new CancelEvent(false);
- if (this.m_willReleaseRecordsetHandler != null) {
- this.m_willReleaseRecordsetHandler.invoke(this, event);
- }
-
- return event.cancel;
- }
-
- public void onAcquireRecordset(Event event) {
- if (this.m_acquireRecordsetHandler != null) {
- this.m_acquireRecordsetHandler.invoke(this, event);
- }
-
- }
-
- private void releaseRecordset() {
- if (this.m_recordset != null) {
- if (this.fireWillReleaseRecordset()) {
- throw new RuntimeException("ReleaseRecordset canceled");
- }
-
- this.m_recordset = null;
- this.onReleaseRecordset(Event.EMPTY);
- }
-
- }
-
- public void setOnAcquireRecordset(EventHandler handler) {
- this.m_acquireRecordsetHandler = handler;
- }
-
- public String getDataMember() {
- return this.m_dataMember;
- }
-
- public void setDataMember(String dataMember) {
- if (!Utils.stringsEqual(dataMember, this.m_dataMember)) {
- this.releaseRecordset();
- this.m_dataMember = dataMember;
- this.acquireRecordset();
- }
-
- }
-
- public Recordset getRecordset() {
- return this.m_recordset;
- }
-
- public boolean isRecordsetAcquired() {
- return this.m_recordset != null;
- }
-
- public void setWillAcquireRecordset(CancelEventHandler handler) {
- this.m_willAcquireRecordsetHandler = handler;
- }
-
- public boolean fireWillAcquireRecordset() {
- CancelEvent event = new CancelEvent(false);
- if (this.m_willAcquireRecordsetHandler != null) {
- this.m_willAcquireRecordsetHandler.invoke(this, event);
- }
-
- return event.cancel;
- }
-
- public void onReleaseRecordset(Event event) {
- if (this.m_releaseRecordsetHandler != null) {
- this.m_releaseRecordsetHandler.invoke(this, event);
- }
-
- }
-
- public void setOnReleaseRecordset(EventHandler handler) {
- this.m_releaseRecordsetHandler = handler;
- }
- }
-